/**
 * 过滤非0以外的假值，可传递对象或数组
 * @param data 需要过滤的原始值
 * @param method: 自定义过滤方法，item是data循环中每一个item值
 */
export function filterNon0FalseValue<T>(
  data,
  method?: (item) => boolean,
) {
  let res = Array.isArray(data) ? [] : {};
  if (Array.isArray(data)) {
    res = data.filter((item) => {
      if (method) {
        return method(item);
      }
      return item || item === 0;
    });
  } else {
    for (const k in data) {
      const value = data[k];
      if (method) {
        if (method(value)) {
          res[k] = value;
        }
      } else if (value || value === 0) {
        res[k] = value;
      }
    }
  }
  return res;
}
